package com.liruo.treasureattic.common.util.tree.ci;

import java.util.List;

/**
 * @Author:liruo
 * @Date:2022-12-15-18:17:40
 * @Desc FSA 父容器和子容器的关联，FSA和FA肯定是一样的类型
 *    get方法换成obtain，避免其他东西调用get方法
 */
public interface Container<FSA>{

    /**
     * 在父Container中，与子Container关联的属性
     */
    FSA obtainFFSA();

    /**
     * 在子Container中，与父Container关联的属性
     */
    FSA obtainSFSA();
    /**
     *表示FContainer的item
     */
    boolean isSubItem(Object item);
    void addItem(Object item);
    boolean isSubContainer(Container<FSA> subContainer);
    void addSubFContainer(Container<FSA> subContainer);
    List<? extends Container<FSA>> obtainSubContainers();
}
